Dynomotion

Group: DynoMotion Message: 14317 From: collimero Date: 1/2/2017
Subject: Snapamp using linear motors and encoders

Hi Tom,

Happy New Year! 

I've got a question about SnapAmp. Currently I'm trying to get the Kflop/SnapAmp working for a system with linear motors and encoders (see photo).

The incremental encoders (renishaw) have a resolution of 0.1 microns per pulse and their position can be read without problems by the encoder inputs of the SnapAmp using the A-A+ and B-B+ outputs of the encoder. The encoders do NOT give out a Z-Z+ index signal. The linear 3-phase motors have 6 different wires for the coils (and two for a Hall sensor), so the coils are separately wired, each coil has a resistance of 20 Ohms.  


If I make one complete 360 phase revolution, the motors move approx. 60mm. From this I can calculate that the invDistPerCycle would be 1.66666E-6. however, I cannot get them to work correctly. The AutoPhaseFind program is not useful, since it requires a Z-signal from the encoder. So I cannot set a CommutationOffset, which is probably not useful anyway. Im running a power supply at 70V and tried to wire the Servo's in Star and Delta configuration. Both give sort of the same problem: generally a servo does not get locked when activated or is instable when pressed against (it then moves to a position a few tens of mm away). However, sometimes when I activate the motor in a specific position by using the axis screen (with the checkbox) the motor suddenly locks and can be accurately moved, for example using the step response window. But when I make the steps bigger than say, 50000 pulses, or set the speed high (for example 50000 pulses/sec) the motor suddenly stops and generally ends up in a state where the PWM is at a moderate or high power level, far away from the pulse position that it is supposed to go to. 


I have no clue how to proceed, or how to get these servo's running without a Z-index. Maybe I'm missing some essential setting or insight. So any help on how to get the servo's running is highly appreciated. 

Best regards, 

Jeroen



  @@attachment@@
Group: DynoMotion Message: 14318 From: Tom Kerekes Date: 1/2/2017
Subject: Re: Snapamp using linear motors and encoders [1 Attachment]

Hi Jeroen,

Have you verified the encoder is working correctly by manually moving around and then moving back to the same physical location to verify the encoder Position is the same?

Otherwise you likely just don't have proper commutation.  If the commutation is wrong then the motor may try to correct an error by moving the wrong way or by energizing a coil with a large current that generates no torque.

Generally to get the commutation to work properly all that is required is:

#1 the correct invDistPerCycle

#2 the correct sign of invDistPerCycle (and/or of the Encoder InputGain0)

#3 the correct Commutation Offset.

It usually isn't too hard to get something to work by simple trial and error.  If the commutation is close (ie within 5% of a commutation cycle distance) then things should work and then you can tweak/optimize from there.

You will need some method of Phase Finding on power up to account for the rotor position relative to the Encoder Position.  There are two normal techniques:

#1 - finding an index pulse.  Since you don't have an index pulse maybe you can use a Hall Sensor.  Hall sensors usually output a wide pulse of 1/2 commutation cycle so you would need to write code to look for a specific transition (change) in the hall sensor and the direction of the transition will change depending on which direction you are rotating.  Actually I think the other hall sensor might be used as a qualifier.  So for example "if hall#1 is high and hall#2 changes treat the same as finding an index pulse"

#2 - energize coils, wait for rotor to snap and hold at a position of zero torque (torque gain must be zero or the motor would accelerate).  At this point of zero torque gain we know that if we moved +/- 1/4 of a cycle away the torque gain would be at maximum.  So we might Zero the encoder and set the CommutationOffset to 1/4 of a cycle.  In your case 600000/4 counts either positive or negative.  One way should work and the other should not (it would have positive feedback).

HTH

Regards

TK


On 1/2/2017 8:16 AM, vleggaar@... [DynoMotion] wrote:
 

Hi Tom,

Happy New Year! 

I've got a question about SnapAmp. Currently I'm trying to get the Kflop/SnapAmp working for a system with linear motors and encoders (see photo).

The incremental encoders (renishaw) have a resolution of 0.1 microns per pulse and their position can be read without problems by the encoder inputs of the SnapAmp using the A-A+ and B-B+ outputs of the encoder. The encoders do NOT give out a Z-Z+ index signal. The linear 3-phase motors have 6 different wires for the coils (and two for a Hall sensor), so the coils are separately wired, each coil has a resistance of 20 Ohms.  


If I make one complete 360 phase revolution, the motors move approx. 60mm. From this I can calculate that the invDistPerCycle would be 1.66666E-6. however, I cannot get them to work correctly. The AutoPhaseFind program is not useful, since it requires a Z-signal from the encoder. So I cannot set a CommutationOffset, which is probably not useful anyway. Im running a power supply at 70V and tried to wire the Servo's in Star and Delta configuration. Both give sort of the same problem: generally a servo does not get locked when activated or is instable when pressed against (it then moves to a position a few tens of mm away). However, sometimes when I activate the motor in a specific position by using the axis screen (with the checkbox) the motor suddenly locks and can be accurately moved, for example using the step response window. But when I make the steps bigger than say, 50000 pulses, or set the speed high (for example 50000 pulses/sec) the motor suddenly stops and generally ends up in a state where the PWM is at a moderate or high power level, far away from the pulse position that it is supposed to go to. 


I have no clue how to proceed, or how to get these servo's running without a Z-index. Maybe I'm missing some essential setting or insight. So any help on how to get the servo's running is highly appreciated. 

Best regards, 

Jeroen




Group: DynoMotion Message: 14320 From: collimero Date: 1/3/2017
Subject: Re: Snapamp using linear motors and encoders
Hi Tom,
Thank you very much for the advice, this really gives me some direction to go on. I think the sign of the invDistPerCycle is correct, in my case it is actually negative (for the sake not to complicate the discussion, I left it out in my post) . I will try both suggested methods and let you know which one worked best. Alternatively I could of course add a photosensor to the car that is moved by the motor, in combination with a long strip containing equally spaced holes. However, this method is more complex. 

This particular type of motor only has one Hall sensor, I did not measure it's output, maybe it is already a pulse-type signal. Quite silly of me not to check, actually. By the way, if you want to see more photo's of the project and the machine: they can be found at his page  https://www.facebook.com/Huygens-Optics-230667607295197/.
Best regards, 
Jeroen  

  

Group: DynoMotion Message: 14321 From: collimero Date: 1/5/2017
Subject: Re: Snapamp using linear motors and encoders [1 Attachment]
Hi Tom,
Just to let you know: the second method worked for me. By using a fixed starting position (where you have zero net force for one particular coil powered on), then zero the axis and then initialize the servo I could get it to work. After some tweeking of the PID and IIR, the actuation worked quite smoothly. However, it still remained very sensitive to mechanical disturbances, especially during accelleration and decelleration. 

I could not try the first suggested option because the 2 other wires on the motor turned out to be only a temperature protection. Apparently I was confused with another motor model that did have hall sensors. 

Unfortunately, during all the servo tweaking, I accidently turned the supply voltage in the wrong direction up instead of down ( I think to about 82V ).  One of the 2Ohms resistor immediately got very hot and the analog display showed a wrong (much lower) supply voltage value after that happened. Even though I switched off everyting within a few seconds and I don't see any damage to the semiconductors or the board itself (just a cracked resistor), I guess that was the end of the servo Drive on the SnapAmp. 

best regards, 
Jeroen
 
Group: DynoMotion Message: 14322 From: Tom Kerekes Date: 1/5/2017
Subject: Re: Snapamp using linear motors and encoders

Hi Jeroen,

Glad that to hear you were able to get some movement but sorry to hear the drive was damaged.

It sounds like the clamp voltage was set less than the power supply voltage which caused damage to the clamp circuit (2 ohm resistor and possibly the connected FET).  I wouldn't expect the Bridge drive to be damaged.  Did you check the 2ohm resistor and FET with an ohm meter?  Have you tried to see if the Bridge Drive still works?

Regards
TK

On 1/5/2017 1:07 AM, vleggaar@... [DynoMotion] wrote:
 

Hi Tom,

Just to let you know: the second method worked for me. By using a fixed starting position (where you have zero net force for one particular coil powered on), then zero the axis and then initialize the servo I could get it to work. After some tweeking of the PID and IIR, the actuation worked quite smoothly. However, it still remained very sensitive to mechanical disturbances, especially during accelleration and decelleration. 

I could not try the first suggested option because the 2 other wires on the motor turned out to be only a temperature protection. Apparently I was confused with another motor model that did have hall sensors. 

Unfortunately, during all the servo tweaking, I accidently turned the supply voltage in the wrong direction up instead of down ( I think to about 82V ).  One of the 2Ohms resistor immediately got very hot and the analog display showed a wrong (much lower) supply voltage value after that happened. Even though I switched off everyting within a few seconds and I don't see any damage to the semiconductors or the board itself (just a cracked resistor), I guess that was the end of the servo Drive on the SnapAmp. 

best regards, 
Jeroen
 

Group: DynoMotion Message: 14323 From: terozi Date: 1/7/2017
Subject: Re: Snapamp using linear motors and encoders
Hi Jeroen,

Perhaps following algorithm would work for motor phasing:

-start driving motor like stepping motor (just drive current, and let commutation angle be directly controlled by algorithm and not affected by encoder in any way). this causes motor to snap into certain magnetic position.
-let motor stabilize while the current is on. when motor is still, the optimum commutation angle will be 90 electrical degrees from the resting position.
-reset encoder counter and set commutation angle 90 degrees from current phase angle.

This is basically how Granite devices IONI drives do phasing for this kind of AC/linear motors with bare A & B encoder channels.

I hope this helps! 
BR Tero
Group: DynoMotion Message: 14324 From: collimero Date: 1/8/2017
Subject: Re: Snapamp using linear motors and encoders
Hi Tom,
I measured value for the resistance, it was still two Ohms, even though it was cracked. Only one of the resistors became hot during this incident. The analog status screen however displays a voltage of ~24.5 Volts on both supplies (#4,#5), even when the input voltage is actually around 70 Volts for both inputs. 

Although I did not measure the FET, I guess it is damaged. After the incident, I reconnected the supplies (without load to the outputs), with the clamping voltage clearly higher that the input voltage. As soon as I activate the Snapamp by setting the peak current limits (lowest value actually: 9) , one resistor becomes very hot with 5-10 seconds. So I guess the total power available is somehow flowing throught the resistor, this could be a damaged FET. I'm not sure whether repairing the FET is any use if the Snapamp does not correctly display the input voltages any more.

Best regards, 
Jeroen        
Group: DynoMotion Message: 14325 From: collimero Date: 1/8/2017
Subject: Re: Snapamp using linear motors and encoders
Hi, thanks for the suggestion, what you describe is actually identical to what Tom stated in a previous post. The procedure works quite well. 

In addition: by measuring the invDistPerCycle over a distance of ~10 cycles, in stead of one I could measure this value and also calculate the commutation more accurately, which lead to a higher system stability.

best regards, Jeroen
Group: DynoMotion Message: 14326 From: Tom Kerekes Date: 1/9/2017
Subject: Re: Snapamp using linear motors and encoders

Hi Jeroen,

It sounds like the FET and clamping circuit is working correctly.  If the FET was shorted it would be clamping continuously and not wait until clamping is enabled in software.

There may be a problem with the ADC circuitry so that the Supply Voltage is not measured properly and in turn the clamping is not applied appropriately.  U15 (AD9201ARSZ) is the ADC that reads the Supply Voltages.  Pins 16 and 27 should read ~ 1% of the applied supply voltages.  Pin 22 should have a 1V Reference Voltage.

Unfortunately it is not usually cost effective to attempt repair of damaged boards.

Regards

TK


On 1/8/2017 4:58 AM, vleggaar@... [DynoMotion] wrote:
 

Hi Tom,

I measured value for the resistance, it was still two Ohms, even though it was cracked. Only one of the resistors became hot during this incident. The analog status screen however displays a voltage of ~24.5 Volts on both supplies (#4,#5), even when the input voltage is actually around 70 Volts for both inputs. 

Although I did not measure the FET, I guess it is damaged. After the incident, I reconnected the supplies (without load to the outputs), with the clamping voltage clearly higher that the input voltage. As soon as I activate the Snapamp by setting the peak current limits (lowest value actually: 9) , one resistor becomes very hot with 5-10 seconds. So I guess the total power available is somehow flowing throught the resistor, this could be a damaged FET. I'm not sure whether repairing the FET is any use if the Snapamp does not correctly display the input voltages any more.

Best regards, 
Jeroen        

Group: DynoMotion Message: 14330 From: collimero Date: 1/12/2017
Subject: Re: Snapamp using linear motors and encoders
Thanks Tom, I'll look into it. I will probably order a new board when that turns out to be the problem. 
Best regards, Jeroen